// 页面白名单，不受拦截
const whiteList = [
	'/pages/index/index',
	'/pages/login/index',
	'/pages/login/login',
	'/pages/login/disclaimer'
]
// 页面黑名单，必受拦截
const BlackList = [
	'/pages/games/mahjong/invitation'
];
function hasPermissionFirstIn(){
	let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
	if(routes!=undefined )
	{
		let curRoute = routes[routes.length - 1].route //获取当前页面路由
		//isLogin是登录成功后在本地存储登录标识，存储一个能够判断用户登录的唯一标识就行，根据自己存储的数据类型来判断
		let token = uni.getStorageSync('userinfo').token;
		let url='/'+curRoute;
		// 在白名单中或有登录判断条件可以直接跳转
		if(BlackList.indexOf(url) !== -1 && token==null) {
			debugger
			console.log('跳转的页面在黑名单内且未登录')
		    return false
		}
		console.log('跳转的页面不在黑名单内且未登录')
		return true;
	}	
}
function hasPermission (url) {
    //isLogin是登录成功后在本地存储登录标识，存储一个能够判断用户登录的唯一标识就行，根据自己存储的数据类型来判断
	let token = uni.getStorageSync('userinfo').token;
    // 在白名单中或有登录判断条件可以直接跳转
    if(url==undefined||whiteList.indexOf(url) !== -1 || token!=null) {
		console.log('跳转的页面在白名单内或是已登录')
        return true
    }
	console.log('跳转的页面不在白名单内且未登录')
    return false
}
uni.addInterceptor('navigateTo', {
    // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
    invoke (e) {
		
        if(!hasPermission(e.url)){
            uni.reLaunch({
                url: '/pages/login/index'
            })
            return false
        }
        return true
    },
    success (e) {
		
    }
})

uni.addInterceptor('getNetworkType', {
    // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
    invoke (e) {
        if(!hasPermission(e.url)&&!hasPermissionFirstIn()){
            uni.reLaunch({
                url: '/pages/login/index'
            })
            return false
        }
        return true
    },
    success (e) {
		
    }
})

uni.addInterceptor('switchTab', {
    // tabbar页面跳转前进行拦截
    invoke (e) {
        if(!hasPermission(e.url)){
            uni.reLaunch({
                url: '/pages/login/index'
            })
			console.log('跳转的页面在白名单内或是已登录')
            return false
        }
		console.log('跳转的页面不在白名单内且未登录')
        return true
    },
    success (e) {
		
    }
})